// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import store from './store'
import iView from 'iview'
import i18n from '@/locale'
import config from '@/config'
import importDirective from '@/directive'
import installPlugin from '@/plugin'
import './index.less'
import '@/assets/icons/iconfont.css'
// 实际打包时应该不引入mock
/* eslint-disable */
require('@/mock')
// if (process.env.NODE_ENV !== 'production') require('@/mock')

//使用Vue.mixin的方法拦截了路由离开事件，并在该拦截方法中实现了销毁页面缓存的功能。
// Vue.mixin({
//   beforeRouteLeave: function (to, from, next) {
//     console.log('store.state.app.tagNavList', store.state.app.tagNavList)
    
//     //此处判断是如果返回上一层，你可以根据自己的业务更改此处的判断逻辑，酌情决定是否摧毁本层缓存。
//     if (from && from.meta.rank && to.meta.rank && from.meta.rank > to.meta.rank) {
//       if (this.$vnode && this.$vnode.data.keepAlive) {
//         if (this.$vnode.parent && this.$vnode.parent.componentInstance && this.$vnode.parent.componentInstance.cache) {
//           if (this.$vnode.componentOptions) {
//             var key = this.$vnode.key == null
//               ? this.$vnode.componentOptions.Ctor.cid + (this.$vnode.componentOptions.tag ? `::${this.$vnode.componentOptions.tag}` : '')
//               : this.$vnode.key;
//             var cache = this.$vnode.parent.componentInstance.cache;
//             var keys = this.$vnode.parent.componentInstance.keys;
//             if (cache[key]) {
//               if (keys.length) {
//                 var index = keys.indexOf(key);
//                 if (index > -1) {
//                   keys.splice(index, 1);
//                 }
//               }
//               delete cache[key];
//             }
//           }
//         }
//       }
//       this.$destroy();
//     }
//     next();
//   },
// });

Vue.use(iView, {
  i18n: (key, value) => i18n.t(key, value)
})
/**
 * @description 注册admin内置插件
 */
installPlugin(Vue)
/**
 * @description 生产环境关掉提示
 */
Vue.config.productionTip = false
/**
 * @description 全局注册应用配置
 */
Vue.prototype.$config = config
/**
 * 注册指令
 */
importDirective(Vue)

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  i18n,
  store,
  render: h => h(App)
})
